package com.wang.designpattern.decorator;

import java.io.DataInputStream;
import java.io.FileInputStream;

public class DecoratorJDK {

    public static void main(String[] args) throws Exception {

        // 1.InputStream是抽象类，类似Drink
        // 2.FileInputStream是InputStream的子类，类似于具体的咖啡类
        // 3.FilterInputStream是InputStream的子类，类似Decorator装饰者
        // 4.DataInputStream是FilterInputStream的子类，具体的装饰者，类似Milk等
        // 5.FilterInputStream有protected volatile InputStream in; 即包含被装饰者
        // 6.分析得出在jdk的io体系中，使用了装饰者模式

        DataInputStream dis = new DataInputStream(new FileInputStream("d:\\new 1.txt"));
        String result = dis.readUTF();
        while (result != null) {
            System.out.println(result);
            result = dis.readUTF();
        }
        dis.close();
    }
}
